package com.mindskip.xzs.service.impl;
//getTaskExamResultByTaskId方法：根据任务ID查询任务考试结果列表，用于获取特定任务的考试结果列表。
//getUserIdByTaskIdAndResultIds方法：根据任务ID和结果ID列表查询用户ID列表，用于获取特定任务和结果ID列表对应的用户ID列表。
//getTaskExamResultByUserIdAndTaskId方法：根据用户ID和任务ID查询任务结果，用于获取特定用户和任务对应的任务结果。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mindskip.xzs.domain.TaskExamResult;
import com.mindskip.xzs.repository.TaskResultMapper;
import com.mindskip.xzs.service.TaskResultServer;
import org.springframework.stereotype.Service;

import java.util.LinkedList;
import java.util.List;

/**
 * TaskResultServerImpl 类是 TaskResultServer 接口的实现类，
 * 负责处理与 TaskExamResult 相关的业务逻辑。
 */
@Service
public class TaskResultServerImpl extends ServiceImpl<TaskResultMapper, TaskExamResult> implements TaskResultServer {

    /**
     * 根据任务 ID 获取任务结果列表
     * @param taskId 任务 ID
     * @return List<TaskExamResult> 任务结果列表
     */
    @Override
    public List<TaskExamResult> getTaskResultByTaskId(Integer taskId) {
        // 创建查询条件包装器
        QueryWrapper<TaskExamResult> taskExamResultQueryWrapper = new QueryWrapper<>();
        // 设置查询条件，任务 ID 等于传入的 taskId
        taskExamResultQueryWrapper.eq("task_id", taskId);
        // 执行查询，并返回结果列表
        return this.baseMapper.selectList(taskExamResultQueryWrapper);
    }

    /**
     * 根据任务 ID 和结果 ID 列表获取用户 ID 列表
     * @param resultIds 结果 ID 列表
     * @param id 任务 ID
     * @return List<Integer> 用户 ID 列表
     */
    @Override
    public List<Integer> getUserIdByTaskIdAndResultIds(List<Integer> resultIds, Integer id) {
        // 创建查询条件包装器
        QueryWrapper<TaskExamResult> taskExamResultQueryWrapper = new QueryWrapper<>();
        // 设置查询条件，任务 ID 等于传入的 id，并且结果 ID 在传入的 resultIds 列表中
        taskExamResultQueryWrapper.eq("task_id", id).in("result_Id", resultIds);
        // 执行查询，并获取结果列表
        List<TaskExamResult> taskExamResults = this.baseMapper.selectList(taskExamResultQueryWrapper);
        // 创建用户 ID 列表
        List<Integer> userIds = new LinkedList<>();
        // 遍历查询结果，将用户 ID 添加到用户 ID 列表
        for (TaskExamResult taskExamResult : taskExamResults) {
            userIds.add(taskExamResult.getUserId());
        }
        // 返回用户 ID 列表
        return userIds;
    }

    /**
     * 根据用户 ID 和任务 ID 获取任务结果
     * @param userId 用户 ID
     * @param taskId 任务 ID
     * @return TaskExamResult 任务结果
     */
    @Override
    public TaskExamResult getTaskExamResultByUserIdAndTaskId(Integer userId, Integer taskId) {
        // 创建查询条件包装器
        QueryWrapper<TaskExamResult> taskExamResultQueryWrapper = new QueryWrapper<>();
        // 设置查询条件，用户 ID 等于传入的 userId，任务 ID 等于传入的 taskId
        taskExamResultQueryWrapper.eq("user_id", userId).eq("task_id", taskId);
        try {
            // 执行查询，并返回任务结果
            TaskExamResult taskExamResult = this.baseMapper.selectOne(taskExamResultQueryWrapper);
            return taskExamResult;
        } catch (Exception e) {
            // 捕获异常并打印错误信息
            System.out.println(e);
            return null;
        }
    }
}
